// 导入数据库操作模块
const db = require('../../db/index.js');

// TODO: 获取文章列表
exports.getartCates = (req,res) => {
    // 定义查询分类列表SQL语句-核心
    const sql = 'SELECT * FROM ev_article_cate WHERE is_delete=0 ORDER BY id ASC';
    // 调用db.query()执行SQL语句
    db.query(sql,(err,results) => {
        if(err)return res._text(err);
        res.send({
            code: 200,
            status: 0,
            message: '获取文章分类数据成功',
            data: results
        });
    });
};
// TODO: 新增文章分类的处理函数
exports.addArticleCates = (req,res) => {
    // 定义查询分类列表SQL语句-核心
    const sqlSrc = 'SELECT * FROM ev_article_cate WHERE name=? OR alias=?';
    // 调用db.query()执行SQL语句
    db.query(sqlSrc,[req.body.name,req.body.alias],(err,results) => {
        // 判断SQL语句是否失败
        if(err)return res._text(err);
        // 1.判断数据的长度
        if(results.length === 2)return res._text('分类名称与分类别名被占用');
        // 2.长度等于 1 的三种情况
        if(results.length === 1 && results[0].name === req.body.name && results[0].alias === req.body.alias)return res._text('分类名称被占用');
        if(results.length === 1 && results[0].name === req.body.name)return res._text('分类别名被占用');
        if(results.length === 1 && results[0].alias === req.body.alias)return res._text('分类别名被占用');
        // 分类名称与分类别名都可用-执行添加操作
        const sql = 'INSERT INTO ev_article_cate SET?';
        // 调用db.query()执行SQL语句
        db.query(sql,req.body,(err,results) => {
            if(err)return res._text(err);
            if(results.affectedRows !== 1)return res._text('新增文章分类失败');
            res._text('新增文章分类成功',0);
        });
    });
};
// TODO: 根据id删除文章分类
exports.deleteCateById = (req,res) => {
    // 定义标记删除的SQL语句-核心
    const sql = 'UPDATE ev_article_cate SET is_delete=1 WHERE id=?';
    db.query(sql,req.params.id,(err,results) => {
        if(err)return res._text(err);
        if(results.affectedRows !== 1)return res._text('删除文章分类失败');
        res._text('删除文章分类成功',0);
    });
};
// TODO: 根据id获取文章分类
exports.getArtCateById = (req,res) => {
    // 定义查询的SQL语句-核心
    const sql = 'SELECT * FROM ev_article_cate WHERE id=?';
    db.query(sql,req.params.id,(err,results) => {
        if(err)return res._text(err);
        if(results.length !== 1)return res._text('查询的结果不存在');
        res.send({
            code: 200,
            status: 0,
            message: '查询文章分类成功',
            data: results[0]
        });
    });
};
// TODO: 根据id更新更改文章分类
exports.updatecateById = (req,res) => {
    // 定义查询 分类名称 | 分类名称别名 是否被占用的SQL语句
    const sqlSrc = 'SELECT * FROM ev_article_cate WHERE Id<>? AND (name=? OR alias=?)';
    // 执行更新文章的SQL语句
    db.query(sqlSrc,[req.body.Id,req.body.name,req.body.alias],(err,results) => {
        // 定义查询的SQL语句-核心
        if(err)return res._text(err);
        // 定义名称和别名被占用的四种情况
        if(results.length === 2)return res._text('分类名称或别名被占用');
        if(results.length === 1 && results[0].name === req.body.name && results[0].alias === req.body.alias)return res._text('分类名称或别名被占用');
        if(results.length === 1 && results[0].name === req.body.name)return res._text('分类别名被占用');
        if(results.length === 1 && results[0].alias === req.body.alias)return res._text('分类别名被占用');
        // 定义文章分类的SQL语句
        const sql = 'UPDATE ev_article_cate SET? WHERE Id=?';
        // 执行更新文章的SQL语句
        db.query(sql,[req.body,req.body.Id],(err,results) =>{
            if(err)return res._text(err);
            if(results.affectedRows !== 1)return res._text('更新分类文章失败');
            res._text('更新文章分类成功',0);
        }); 
    });
};